﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using IcbcOpenDemo.Models.Tools;

namespace IcbcOpenDemo.Models
{
    public class RequestPayPer : BaseAPI
    {
        private string PATH = "mybank/enterprise/salary/financialoffice/mesfinstrsubmit/V1";

        public override string GetPath()
        {
            return PATH;
        }

        #region 该接口的bizcontent部份，请将所有属性的类型都设置为string
        public string trans_code { get { return "PAYPER"; } } // 交易代码
        public string tran_date { get; set; } // 交易日期：ERP系统产生，格式是yyyyMMdd
        public string tran_time { get; set; } // 交易时间：ERP系统产生，格式如HHmmssSSS，精确到毫秒
        public string language { get { return "zh_CN"; } } // 语言：zh_CN简体中文，en_US英文，默认zh_CN
        public string f_seq_no { get; set; } // 指令包序列号：ERP系统产生，一个集团永远不能重复
        public string zip_flag { get; set; } // 报文压缩标志：1：压缩rd区；空/0：不压缩
        public string zip { get; set; } // 报文压缩内容：zip算法压缩rd区后再BASE64编码，约定取第一个文件
        public string onl_bat_flag { get; set; } // 联机批量标志：1：联机；2：批量
        public string settle_mode { get; set; } // 入账方式：0：逐笔记账；2：并笔记账
        public string busi_type { get; set; } // 业务种类编号：1-999的数字，仅并笔记账时有效
        public string instr_count { get; set; } // 总笔数：总笔数
        public string total_amount { get; set; } // 总金额：总金额
        public string package_name { get; set; } // 批量包名
        public string summary_total { get; set; } // 汇总摘要：仅并笔记账时有效
        public string batch_sum_flag { get; set; } // 批量汇总明细标志：0：汇总回冲；2:汇总轧差。仅批量且并笔记账时有效

        public List<RequestPayPerRd> rd { get; set; }

        #endregion
        
    }

    public class RequestPayPerRd
    {
        public string uni_busi_id { get; set; } // 业务唯一编号：相同指令不重复
        public string i_seq_no { get; set; } // 指令顺序号：每笔指令的序号，本包内不重复
        public string schedule_date { get; set; } // 预约日期，批量方式时不支持
        public string pay_type { get; set; } // 记账处理方式：1：加急；2：普通；3：跨行快汇。联机批量标志为2-批量时，此字段无意义，上送1即可
        public string payer_account { get; set; } // 本方账号：管家卡付款时选输，如果输入需要为管家卡对应结算账号
        public string payer_cnname { get; set; } // 本方账户名称
        public string payer_enname { get; set; } // 本方账户英文名称：账号付款时，中文名称、英文名称至少输入一项
        public string payee_account { get; set; } // 对方账号
        public string payee_cnname { get; set; } // 对方账户名称
        public string payee_enname { get; set; } // 对方账户英文名称：中文名称、英文名称至少输入一项
        public string io_flag { get; set; } // 系统内外标志：1：系统内；2：系统外
        public string same_city_flag { get; set; } // 同城异地标志：1：同城；2：异地
        public string payee_city { get; set; } // 收款方所在城市名称
        public string payee_bank_no { get; set; } // 对方行行号：跨行指令要求对方行行号和行名上送正确
        public string payee_bank_name { get; set; } // 对方行行名：中文，60位字符
        public string currency { get; set; } // 币种：仅支持人民币
        public string amount { get; set; } // 金额：无正负号，以分为单位
        public string purpose_code { get; set; } // 用途代码
        public string purpose { get; set; } // 用途中文描述：用途代码和用途中文描述必输其一，仅支持财务室用途
        public string summary { get; set; } // 摘要
        public string summary_en { get; set; } // 英文备注
        public string postscript { get; set; } // 附言：不得有非法字符，包括 ' " : %
        public string ref_no { get; set; } // 业务编号（业务参考号）
        public string related_ref_no { get; set; } // 相关业务编号
        public string erp_serial_no { get; set; } // ERP流水号
        public string erp_check_no { get; set; } // ERP支票号
        public string busi_code { get; set; } // 业务代码
        public string ori_voucher_type { get; set; } // 原始凭证种类
        public string ori_voucher_no { get; set; } // 原始凭证号
        public string ori_voucher_name { get; set; } // 原始凭证名称
        public string manager_card_no { get; set; } // 管家卡卡号：管家卡付款时必输
        public string manager_card_name { get; set; } // 管家卡名称：管家卡付款时选输

    }
}